const { app, BrowserWindow,Menu,Tray } = require('electron');



function createWindow () {   
  //设置默认菜单:空，不显示
  Menu.setApplicationMenu(null);
  // 创建浏览器窗口
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    frame:false,
    webPreferences: {
      nodeIntegration: true
    }
  });

  // 加载index.html文件
  win.loadFile(__dirname +'/../index.html');
  // 当我们点击关闭时触发close事件，我们按照之前的思路在关闭时，隐藏窗口，隐藏任务栏窗口
  // event.preventDefault(); 禁止关闭行为(非常必要，因为我们并不是想要关闭窗口，所以需要禁止默认行为)
  win.on('close', (event) => { 
      win.hide(); 
      win.setSkipTaskbar(true);
      event.preventDefault();
  });
  win.on('show', () => {
    tray.setHighlightMode('always')
  });
  win.on('hide', () => {
    tray.setHighlightMode('never')
  });
//创建系统通知区菜单
  
}

app.whenReady().then(createWindow);
//当所有窗口都被关闭后退出
app.on('window-all-closed', () => {
  // 在 macOS 上，除非用户用 Cmd + Q 确定地退出，
  // 否则绝大部分应用及其菜单栏会保持激活。
  if (process.platform !== 'darwin') {
    app.quit()
  }
});

app.on('activate', () => {
  // 在macOS上，当单击dock图标并且没有其他窗口打开时，
  // 通常在应用程序中重新创建一个窗口。
  if (BrowserWindow.getAllWindows().length === 0) {
    createWindow()
  }
});

function createTray(win){
  let tray = new Tray(__dirname+ '/../images/ico.ico');
  const contextMenu = Menu.buildFromTemplate([
    {label: '退出', click: () => {win.destroy()}},//我们需要在这里有一个真正的退出（这里直接强制退出）
  ]);
  tray.setToolTip('My托盘测试');
  tray.setContextMenu(contextMenu);
  tray.on('click', ()=>{ //我们这里模拟桌面程序点击通知区图标实现打开关闭应用的功能
    win.isVisible() ? win.hide() : win.show();
    win.isVisible() ?win.setSkipTaskbar(false):win.setSkipTaskbar(true);
  });
}
